Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

SQL insert webservice

Îåêßíçóå áðü ôï ìÝëïò DaltonGR. Τελευταία δημοσίευση από το μέλος KelMan στις 28-02-2008, 13:14. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  25-02-2008, 15:49 40475

    SQL insert webservice

    Καλησπέρα,

    Έχω ένα webservice το οποίο παίρνει σαν παράμετρους τιμές και τις καταχωρεί σε ένα πίνακα βάσης δεδομένων.Και το webservice αλλα και η βάση βρίσκονται στον ίδιο server.αν καταχωρήσω τα δεδομένα απο τον internet explorer καταχωρούνται κανονικά, άν προσπαθήσω να τα καταχωρήσω απο μια mobile εφαρμογή δεν εμφανίζει μήνυμα λάθους αλλα δεν καταχωρεί την εγγραφή.

    <WebMethod()> _

    Public Function sendData(ByVal a As String, ByVal b As String, ByVal c As Integer) As Integer

    dim myConnection As SqlClient.SqlConnection

    Dim MyCommand As New SqlClient.SqlCommand()

    myConnection = New SqlClient.SqlConnection("Data Source=192.168.0.1;Initial Catalog=aaa;user id =sa;password=1;")

    Dim sqlInsert As String = "Insert into MinosKliseis(KlisiID,KlisiNumber,ArKukloforias) values(-1,'" & b & "','" & c &  "')"

    MyCommand.CommandText = sqlInsert

    myConnection.Open()

    MyCommand.Connection = myConnection

    Try

    MyCommand.ExecuteNonQuery()

    Catch exep As Exception

    'MsgBox(exep.Message, MsgBoxStyle.Critical, "Σφάλμα Καταχώρησης")

    Finally

    myConnection.Close()

    End Try

    Return Convert.ToInt32(getID())

    End Function

     

     

  •  25-02-2008, 18:45 40481 σε απάντηση της 40475

    Απ: SQL insert webservice

    Έτσι όπως έχεις γράψει τον κώδικα είναι λογικό να μην εμφανίζεται κανένα μήνυμα σφάλματος, γιατί το εξαφανίζεις στο Catch. Εφόσον θέλεις να επιστρέφονται τα σφάλματα στον client, βγάλε το catch. Αν θέλεις να μην επιστρέφονται τα λάθη, χρησιμοποίησε κάποια από τις μεθόδους της System.Debug.Trace για να γράψεις κάποιο μήνυμα λάθους σε ένα log file ή το Event Log.

    Το πρόβλημα σου πάντως πρέπει να βρίσκεται στον τρόπο με τον οποίο καλείς το web service. Αν το πρόβλημα ήταν στο ίδιο το web service θα είχες πρόβλημα και όταν το καλείς από τον Internet Explorer. Δοκίμασε να καλέσεις το web service μέσα από ένα απλό console application ή κάποιο απλό winforms application για να εξασφαλίσεις ότι το πρόβλημα δεν είναι στη σύνδεση του mobile app με το web service

    Τέλος, υπάρχει πολύ καλύτερος τρόπος να κλείσεις αυτόματα το connection σε περίπτωση λάθους, χρησιμοποιώντας τη Using όπως παρακάτω. Η Using αναλαμβάνει να κάνει Dispose την myConnection ακόμα και αν υπάρξουν exceptions, όταν ο κώδικας φτάσει στην End Using. Επίσης, πρόσεξε ότι έχω βάλει την Throw μέσα στην Catch. Αφού δεν ξέρω τί να κάνω με το exception, το στέλνω σε όποιον με κάλεσε ελπίζοντας ότι θα το χειριστεί αυτός. Τέλος, θα πρέπει να ξαναγράψεις το query έτσι ώστε να χρησιμοποιεί παραμέτρους, καθώς αυτό είναι πολύ γρηγορότερο και πολύ ασφαλέστερο από το να φτιάχνεις ένα χύμα string:

    <WebMethod()> _
    Public Function sendData(ByVal a As String, ByVal b As String, ByVal c As Integer) As Integer

      Using myConnection As New SqlClient.SqlConnection("Data Source=192.168.0.1;Initial Catalog=aaa;user id =sa;password=1;")
        Dim sqlInsert As String = String.Format("Insert into MinosKliseis(KlisiID,KlisiNumber,ArKukloforias) values(-1,'{0}','{1}')", b, c)
        Dim MyCommand As New SqlClient.SqlCommand(sqlInsert,myConnection)
        myConnection.Open()
        Try
          MyCommand.ExecuteNonQuery()
          myConnection.Close()
        Catch exep As Exception
          Trace.TraceError(exep.ToString())
          Throw
        End Try
      End Using
    End Function


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  26-02-2008, 09:30 40494 σε απάντηση της 40481

    Απ: SQL insert webservice

    ευχαριστώ για την απάντηση.Έλυσε το πρόβλημα, μόνο μια ερώτηση ακόμα, μία απο τις παραμέτρους είναι ημερομηνία(και το πεδίο της βάση datetime ειναι) όταν την περνώ με date.now.toshortdatestring μου εμφανίζει μήνυμα λάθους "cannot convert char to datetime..."...

    ευχαριστώ και πάλι...

  •  26-02-2008, 14:56 40515 σε απάντηση της 40494

    Απ: SQL insert webservice

    Άρα, αφού είναι DateTime γιατί το μετατρέπεις σε string με την ToShortDateString;


    Vir prudens non contra ventum mingit
  •  28-02-2008, 13:02 40573 σε απάντηση της 40515

    Απ: SQL insert webservice

    Βρήκα την λύση ευχαριστώ.Έχω μια ερώτηση πώς μπορώ να κάνω το web service να μην μπορεί να δέχεται δεδομένα αν κάποιος βρεί το url του παρα μόνο απο την εφαρμογή που έχω φτιάξει?

    Ευχαριστώ και πάλι...

  •  28-02-2008, 13:14 40576 σε απάντηση της 40573

    Απ: SQL insert webservice

    Χρειάζεται να ψάξεις για "web service security" ή για "web service authentication". Θα βρεις αρκετό υλικό εδώ στο dotNETZone, αλλά και στις μηχανές αναζήτησης.


    Vir prudens non contra ventum mingit
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems